package com.example.utils.weixin;

import org.apache.commons.lang3.StringUtils;

public class WeixinPayResult {
    private boolean success;
    //微信接口公共属性
    private String return_code;
    private String return_msg;
    /**
     * 业务结果状态：success/fail
     */
    private String result_code;
//生成付款码特定返回参数
    /**
     * 预支付交易会话标识
     */
    private String prepay_id;
    private String out_trade_no;//系统自定义生成的订单号参数
    /**
     * 支付二维码链接
     */
    private String code_url;

// 查询订单返回结果状态
    /**
     * 是否关注公众号 y or n
     */
    private String is_subscribe;
    /**
     * 交易状态
     * SUCCESS—支付成功
     * <p>
     * REFUND—转入退款
     * <p>
     * NOTPAY—未支付
     * <p>
     * CLOSED—已关闭
     * <p>
     * REVOKED—已撤销（付款码支付）
     * <p>
     * USERPAYING--用户支付中（付款码支付）
     * <p>
     * PAYERROR--支付失败(其他原因，如银行返回失败)
     */
    private String trade_state;
    private String trade_state_str;
    /**
     * 付款银行
     */
    private String bank_type;
    /**
     * 标价金额
     */
    private Integer total_fee;
    /**
     * 预支付订单号。只有当支付成功，才会有值
     */
    private String transaction_id;
    /**
     * 交易完成时间。 订单支付时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010
     */
    private String time_end;

//关闭订单
    /**
     * 操作失败错误码
     */
    private String err_code;
    /**
     * 操作失败错误描述
     * ORDERPAID 	订单已支付 	订单已支付，不能发起关单 	订单已支付，不能发起关单，请当作已支付的正常交易
     * SYSTEMERROR 	系统错误 	系统错误 	系统异常，请重新调用该API
     * ORDERCLOSED 	订单已关闭 	订单已关闭，无法重复关闭 	订单已关闭，无需继续调用
     * SIGNERROR 	签名错误 	参数签名结果不正确 	请检查签名参数和方法是否都符合签名算法要求
     * REQUIRE_POST_METHOD 	请使用post方法 	未使用post传递参数  	请检查请求参数是否通过post方法提交
     * XML_FORMAT_ERROR 	XML格式错误 	XML格式错误 	请检查XML参数格式是否正确
     */
    private String err_code_des;

    public boolean isSuccess() {
        return "SUCCESS".equalsIgnoreCase(return_code);
    }

    public String getReturn_code() {
        return return_code;
    }

    public void setReturn_code(String return_code) {
        this.return_code = return_code;
    }

    public String getReturn_msg() {
        return return_msg;
    }

    public void setReturn_msg(String return_msg) {
        this.return_msg = return_msg;
    }

    public String getResult_code() {
        return result_code;
    }

    public void setResult_code(String result_code) {
        this.result_code = result_code;
    }

    public String getPrepay_id() {
        return prepay_id;
    }

    public void setPrepay_id(String prepay_id) {
        this.prepay_id = prepay_id;
    }

    public String getOut_trade_no() {
        return out_trade_no;
    }

    public void setOut_trade_no(String out_trade_no) {
        this.out_trade_no = out_trade_no;
    }

    public String getCode_url() {
        return code_url;
    }

    public void setCode_url(String code_url) {
        this.code_url = code_url;
    }

    public String getIs_subscribe() {
        return is_subscribe;
    }

    public void setIs_subscribe(String is_subscribe) {
        this.is_subscribe = is_subscribe;
    }

    public String getTrade_state() {
        return trade_state;
    }

    public void setTrade_state(String trade_state) {
        this.trade_state = trade_state;
    }

    public String getTrade_state_str() {
        return trade_state_str;
    }

    public void setTrade_state_str(String trade_state_str) {
        this.trade_state_str = trade_state_str;
    }

    public String getBank_type() {
        return bank_type;
    }

    public void setBank_type(String bank_type) {
        this.bank_type = bank_type;
    }

    public Integer getTotal_fee() {
        return total_fee;
    }

    public void setTotal_fee(Integer total_fee) {
        this.total_fee = total_fee;
    }

    public String getTransaction_id() {
        return transaction_id;
    }

    public void setTransaction_id(String transaction_id) {
        this.transaction_id = transaction_id;
    }

    public String getTime_end() {
        return time_end;
    }

    public void setTime_end(String time_end) {
        this.time_end = time_end;
    }

    public String getErr_code() {
        return err_code;
    }

    public void setErr_code(String err_code) {
        this.err_code = err_code;
    }

    public String getErr_code_des() {
        return err_code_des;
    }

    public void setErr_code_des(String err_code_des) {
        this.err_code_des = err_code_des;
    }

    @Override
    public String toString() {
        return "WeixinPayResult{" +
                "success=" + isSuccess() +
                ", return_code='" + return_code + '\'' +
                ", return_msg='" + return_msg + '\'' +
                ", result_code='" + result_code + '\'' +
                ", prepay_id='" + prepay_id + '\'' +
                ", out_trade_no='" + out_trade_no + '\'' +
                ", code_url='" + code_url + '\'' +
                ", is_subscribe='" + is_subscribe + '\'' +
                ", trade_state='" + trade_state + '\'' +
                ", trade_state_str='" + trade_state_str + '\'' +
                ", bank_type='" + bank_type + '\'' +
                ", total_fee=" + total_fee +
                ", transaction_id='" + transaction_id + '\'' +
                ", time_end='" + time_end + '\'' +
                ", err_code='" + err_code + '\'' +
                ", err_code_des='" + err_code_des + '\'' +
                '}';
    }
}
